home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mac Magazin/MacEasy 19
/
Mac Magazin and MacEasy Magazine CD - Issue 19.iso
/
Utilities
/
uae-0.4
/
Source Code
/
CPU Sources
/
cpu5.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-02-13
|
228KB
|
8,137 lines
#include "config.h"
#include "amiga.h"
#include "options.h"
#include <stdlib.h>
#include "memory.h"
#include "custom.h"
#include "newcpu.h"
#include "cputbl.h"
void op_5000(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ BYTE dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
}}}}}}
void op_5010(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5018(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5020(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5028(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5030(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}}
void op_5038(UWORD opcode)
{
ULONG srcreg = 8;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5039(UWORD opcode)
{
ULONG srcreg = 8;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5040(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ WORD dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
}}}}}}
void op_5048(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst + src;
regs.a[dstreg] = (newv);
}}}}}
void op_5050(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5058(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ regs.a[dstreg] += 2;
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5060(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 2;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5068(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5070(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}}
void op_5078(UWORD opcode)
{
ULONG srcreg = 8;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5079(UWORD opcode)
{
ULONG srcreg = 8;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5080(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
regs.d[dstreg] = (newv);
}}}}}}
void op_5088(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst + src;
regs.a[dstreg] = (newv);
}}}}}
void op_5090(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5098(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ regs.a[dstreg] += 4;
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_50a0(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 4;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_50a8(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_50b0(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}}
void op_50b8(UWORD opcode)
{
ULONG srcreg = 8;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_50b9(UWORD opcode)
{
ULONG srcreg = 8;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_50c0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{{ int val = cctrue(0) ? 0xff : 0;
regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
}}}}
void op_50c8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ WORD src = regs.d[srcreg];
{ WORD offs = nextiword();
if (!cctrue(0)) {
if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
}
}}}}
void op_50d0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(0) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_50d8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
{ int val = cctrue(0) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_50e0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(0) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_50e8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
{ int val = cctrue(0) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_50f0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
UWORD srcdp = nextiword();
srca += (LONG)(BYTE)(srcdp & 0xFF);
{ ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
srca += srcdpr;
{ int val = cctrue(0) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_50f8(UWORD opcode)
{
{{ CPTR srca = (LONG)(WORD)nextiword();
{ int val = cctrue(0) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_50f9(UWORD opcode)
{
{{ CPTR srca = nextilong();
{ int val = cctrue(0) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5100(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ BYTE dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
}}}}}}
void op_5110(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5118(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5120(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5128(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5130(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}}
void op_5138(UWORD opcode)
{
ULONG srcreg = 8;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5139(UWORD opcode)
{
ULONG srcreg = 8;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5140(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ WORD dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
}}}}}}
void op_5148(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst - src;
regs.a[dstreg] = (newv);
}}}}}
void op_5150(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5158(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ regs.a[dstreg] += 2;
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5160(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 2;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5168(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5170(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}}
void op_5178(UWORD opcode)
{
ULONG srcreg = 8;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5179(UWORD opcode)
{
ULONG srcreg = 8;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5180(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
regs.d[dstreg] = (newv);
}}}}}}
void op_5188(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst - src;
regs.a[dstreg] = (newv);
}}}}}
void op_5190(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5198(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ regs.a[dstreg] += 4;
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_51a0(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 4;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_51a8(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_51b0(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}}
void op_51b8(UWORD opcode)
{
ULONG srcreg = 8;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_51b9(UWORD opcode)
{
ULONG srcreg = 8;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_51c0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{{ int val = cctrue(1) ? 0xff : 0;
regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
}}}}
void op_51c8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ WORD src = regs.d[srcreg];
{ WORD offs = nextiword();
if (!cctrue(1)) {
if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
}
}}}}
void op_51d0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(1) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_51d8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
{ int val = cctrue(1) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_51e0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(1) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_51e8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
{ int val = cctrue(1) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_51f0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
UWORD srcdp = nextiword();
srca += (LONG)(BYTE)(srcdp & 0xFF);
{ ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
srca += srcdpr;
{ int val = cctrue(1) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_51f8(UWORD opcode)
{
{{ CPTR srca = (LONG)(WORD)nextiword();
{ int val = cctrue(1) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_51f9(UWORD opcode)
{
{{ CPTR srca = nextilong();
{ int val = cctrue(1) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5200(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ BYTE dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
}}}}}}
void op_5210(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5218(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5220(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5228(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5230(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}}
void op_5238(UWORD opcode)
{
ULONG srcreg = 1;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5239(UWORD opcode)
{
ULONG srcreg = 1;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5240(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ WORD dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
}}}}}}
void op_5248(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst + src;
regs.a[dstreg] = (newv);
}}}}}
void op_5250(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5258(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ regs.a[dstreg] += 2;
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5260(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 2;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5268(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5270(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}}
void op_5278(UWORD opcode)
{
ULONG srcreg = 1;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5279(UWORD opcode)
{
ULONG srcreg = 1;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5280(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
regs.d[dstreg] = (newv);
}}}}}}
void op_5288(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst + src;
regs.a[dstreg] = (newv);
}}}}}
void op_5290(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5298(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ regs.a[dstreg] += 4;
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_52a0(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 4;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_52a8(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_52b0(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}}
void op_52b8(UWORD opcode)
{
ULONG srcreg = 1;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_52b9(UWORD opcode)
{
ULONG srcreg = 1;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_52c0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{{ int val = cctrue(2) ? 0xff : 0;
regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
}}}}
void op_52c8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ WORD src = regs.d[srcreg];
{ WORD offs = nextiword();
if (!cctrue(2)) {
if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
}
}}}}
void op_52d0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(2) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_52d8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
{ int val = cctrue(2) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_52e0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(2) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_52e8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
{ int val = cctrue(2) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_52f0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
UWORD srcdp = nextiword();
srca += (LONG)(BYTE)(srcdp & 0xFF);
{ ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
srca += srcdpr;
{ int val = cctrue(2) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_52f8(UWORD opcode)
{
{{ CPTR srca = (LONG)(WORD)nextiword();
{ int val = cctrue(2) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_52f9(UWORD opcode)
{
{{ CPTR srca = nextilong();
{ int val = cctrue(2) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5300(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ BYTE dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
}}}}}}
void op_5310(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5318(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5320(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5328(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5330(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}}
void op_5338(UWORD opcode)
{
ULONG srcreg = 1;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5339(UWORD opcode)
{
ULONG srcreg = 1;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5340(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ WORD dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
}}}}}}
void op_5348(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst - src;
regs.a[dstreg] = (newv);
}}}}}
void op_5350(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5358(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ regs.a[dstreg] += 2;
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5360(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 2;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5368(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5370(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}}
void op_5378(UWORD opcode)
{
ULONG srcreg = 1;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5379(UWORD opcode)
{
ULONG srcreg = 1;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5380(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
regs.d[dstreg] = (newv);
}}}}}}
void op_5388(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst - src;
regs.a[dstreg] = (newv);
}}}}}
void op_5390(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5398(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ regs.a[dstreg] += 4;
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_53a0(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 4;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_53a8(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_53b0(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}}
void op_53b8(UWORD opcode)
{
ULONG srcreg = 1;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_53b9(UWORD opcode)
{
ULONG srcreg = 1;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_53c0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{{ int val = cctrue(3) ? 0xff : 0;
regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
}}}}
void op_53c8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ WORD src = regs.d[srcreg];
{ WORD offs = nextiword();
if (!cctrue(3)) {
if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
}
}}}}
void op_53d0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(3) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_53d8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
{ int val = cctrue(3) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_53e0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(3) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_53e8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
{ int val = cctrue(3) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_53f0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
UWORD srcdp = nextiword();
srca += (LONG)(BYTE)(srcdp & 0xFF);
{ ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
srca += srcdpr;
{ int val = cctrue(3) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_53f8(UWORD opcode)
{
{{ CPTR srca = (LONG)(WORD)nextiword();
{ int val = cctrue(3) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_53f9(UWORD opcode)
{
{{ CPTR srca = nextilong();
{ int val = cctrue(3) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5400(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ BYTE dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
}}}}}}
void op_5410(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5418(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5420(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5428(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5430(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}}
void op_5438(UWORD opcode)
{
ULONG srcreg = 2;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5439(UWORD opcode)
{
ULONG srcreg = 2;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5440(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ WORD dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
}}}}}}
void op_5448(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst + src;
regs.a[dstreg] = (newv);
}}}}}
void op_5450(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5458(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ regs.a[dstreg] += 2;
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5460(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 2;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5468(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5470(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}}
void op_5478(UWORD opcode)
{
ULONG srcreg = 2;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5479(UWORD opcode)
{
ULONG srcreg = 2;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5480(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
regs.d[dstreg] = (newv);
}}}}}}
void op_5488(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst + src;
regs.a[dstreg] = (newv);
}}}}}
void op_5490(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5498(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ regs.a[dstreg] += 4;
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_54a0(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 4;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_54a8(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_54b0(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}}
void op_54b8(UWORD opcode)
{
ULONG srcreg = 2;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_54b9(UWORD opcode)
{
ULONG srcreg = 2;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_54c0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{{ int val = cctrue(4) ? 0xff : 0;
regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
}}}}
void op_54c8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ WORD src = regs.d[srcreg];
{ WORD offs = nextiword();
if (!cctrue(4)) {
if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
}
}}}}
void op_54d0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(4) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_54d8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
{ int val = cctrue(4) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_54e0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(4) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_54e8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
{ int val = cctrue(4) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_54f0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
UWORD srcdp = nextiword();
srca += (LONG)(BYTE)(srcdp & 0xFF);
{ ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
srca += srcdpr;
{ int val = cctrue(4) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_54f8(UWORD opcode)
{
{{ CPTR srca = (LONG)(WORD)nextiword();
{ int val = cctrue(4) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_54f9(UWORD opcode)
{
{{ CPTR srca = nextilong();
{ int val = cctrue(4) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5500(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ BYTE dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
}}}}}}
void op_5510(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5518(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5520(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5528(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5530(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}}
void op_5538(UWORD opcode)
{
ULONG srcreg = 2;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5539(UWORD opcode)
{
ULONG srcreg = 2;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5540(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ WORD dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
}}}}}}
void op_5548(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst - src;
regs.a[dstreg] = (newv);
}}}}}
void op_5550(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5558(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ regs.a[dstreg] += 2;
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5560(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 2;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5568(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5570(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}}
void op_5578(UWORD opcode)
{
ULONG srcreg = 2;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5579(UWORD opcode)
{
ULONG srcreg = 2;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5580(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
regs.d[dstreg] = (newv);
}}}}}}
void op_5588(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst - src;
regs.a[dstreg] = (newv);
}}}}}
void op_5590(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5598(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ regs.a[dstreg] += 4;
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_55a0(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 4;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_55a8(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_55b0(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}}
void op_55b8(UWORD opcode)
{
ULONG srcreg = 2;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_55b9(UWORD opcode)
{
ULONG srcreg = 2;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_55c0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{{ int val = cctrue(5) ? 0xff : 0;
regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
}}}}
void op_55c8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ WORD src = regs.d[srcreg];
{ WORD offs = nextiword();
if (!cctrue(5)) {
if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
}
}}}}
void op_55d0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(5) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_55d8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
{ int val = cctrue(5) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_55e0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(5) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_55e8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
{ int val = cctrue(5) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_55f0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
UWORD srcdp = nextiword();
srca += (LONG)(BYTE)(srcdp & 0xFF);
{ ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
srca += srcdpr;
{ int val = cctrue(5) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_55f8(UWORD opcode)
{
{{ CPTR srca = (LONG)(WORD)nextiword();
{ int val = cctrue(5) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_55f9(UWORD opcode)
{
{{ CPTR srca = nextilong();
{ int val = cctrue(5) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5600(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ BYTE dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
}}}}}}
void op_5610(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5618(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5620(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5628(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5630(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}}
void op_5638(UWORD opcode)
{
ULONG srcreg = 3;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5639(UWORD opcode)
{
ULONG srcreg = 3;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5640(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ WORD dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
}}}}}}
void op_5648(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst + src;
regs.a[dstreg] = (newv);
}}}}}
void op_5650(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5658(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ regs.a[dstreg] += 2;
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5660(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 2;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5668(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5670(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}}
void op_5678(UWORD opcode)
{
ULONG srcreg = 3;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5679(UWORD opcode)
{
ULONG srcreg = 3;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5680(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
regs.d[dstreg] = (newv);
}}}}}}
void op_5688(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst + src;
regs.a[dstreg] = (newv);
}}}}}
void op_5690(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5698(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ regs.a[dstreg] += 4;
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_56a0(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 4;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_56a8(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_56b0(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}}
void op_56b8(UWORD opcode)
{
ULONG srcreg = 3;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_56b9(UWORD opcode)
{
ULONG srcreg = 3;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_56c0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{{ int val = cctrue(6) ? 0xff : 0;
regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
}}}}
void op_56c8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ WORD src = regs.d[srcreg];
{ WORD offs = nextiword();
if (!cctrue(6)) {
if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
}
}}}}
void op_56d0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(6) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_56d8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
{ int val = cctrue(6) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_56e0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(6) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_56e8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
{ int val = cctrue(6) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_56f0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
UWORD srcdp = nextiword();
srca += (LONG)(BYTE)(srcdp & 0xFF);
{ ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
srca += srcdpr;
{ int val = cctrue(6) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_56f8(UWORD opcode)
{
{{ CPTR srca = (LONG)(WORD)nextiword();
{ int val = cctrue(6) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_56f9(UWORD opcode)
{
{{ CPTR srca = nextilong();
{ int val = cctrue(6) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5700(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ BYTE dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
}}}}}}
void op_5710(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5718(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5720(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5728(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5730(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}}
void op_5738(UWORD opcode)
{
ULONG srcreg = 3;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5739(UWORD opcode)
{
ULONG srcreg = 3;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5740(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ WORD dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
}}}}}}
void op_5748(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst - src;
regs.a[dstreg] = (newv);
}}}}}
void op_5750(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5758(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ regs.a[dstreg] += 2;
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5760(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 2;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5768(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5770(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}}
void op_5778(UWORD opcode)
{
ULONG srcreg = 3;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5779(UWORD opcode)
{
ULONG srcreg = 3;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5780(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
regs.d[dstreg] = (newv);
}}}}}}
void op_5788(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst - src;
regs.a[dstreg] = (newv);
}}}}}
void op_5790(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5798(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ regs.a[dstreg] += 4;
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_57a0(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 4;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_57a8(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_57b0(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}}
void op_57b8(UWORD opcode)
{
ULONG srcreg = 3;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_57b9(UWORD opcode)
{
ULONG srcreg = 3;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_57c0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{{ int val = cctrue(7) ? 0xff : 0;
regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
}}}}
void op_57c8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ WORD src = regs.d[srcreg];
{ WORD offs = nextiword();
if (!cctrue(7)) {
if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
}
}}}}
void op_57d0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(7) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_57d8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
{ int val = cctrue(7) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_57e0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(7) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_57e8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
{ int val = cctrue(7) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_57f0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
UWORD srcdp = nextiword();
srca += (LONG)(BYTE)(srcdp & 0xFF);
{ ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
srca += srcdpr;
{ int val = cctrue(7) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_57f8(UWORD opcode)
{
{{ CPTR srca = (LONG)(WORD)nextiword();
{ int val = cctrue(7) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_57f9(UWORD opcode)
{
{{ CPTR srca = nextilong();
{ int val = cctrue(7) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5800(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ BYTE dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
}}}}}}
void op_5810(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5818(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5820(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5828(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5830(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}}
void op_5838(UWORD opcode)
{
ULONG srcreg = 4;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5839(UWORD opcode)
{
ULONG srcreg = 4;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5840(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ WORD dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
}}}}}}
void op_5848(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst + src;
regs.a[dstreg] = (newv);
}}}}}
void op_5850(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5858(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ regs.a[dstreg] += 2;
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5860(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 2;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5868(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5870(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}}
void op_5878(UWORD opcode)
{
ULONG srcreg = 4;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5879(UWORD opcode)
{
ULONG srcreg = 4;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5880(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
regs.d[dstreg] = (newv);
}}}}}}
void op_5888(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst + src;
regs.a[dstreg] = (newv);
}}}}}
void op_5890(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5898(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ regs.a[dstreg] += 4;
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_58a0(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 4;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_58a8(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_58b0(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}}
void op_58b8(UWORD opcode)
{
ULONG srcreg = 4;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_58b9(UWORD opcode)
{
ULONG srcreg = 4;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_58c0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{{ int val = cctrue(8) ? 0xff : 0;
regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
}}}}
void op_58c8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ WORD src = regs.d[srcreg];
{ WORD offs = nextiword();
if (!cctrue(8)) {
if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
}
}}}}
void op_58d0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(8) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_58d8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
{ int val = cctrue(8) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_58e0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(8) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_58e8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
{ int val = cctrue(8) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_58f0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
UWORD srcdp = nextiword();
srca += (LONG)(BYTE)(srcdp & 0xFF);
{ ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
srca += srcdpr;
{ int val = cctrue(8) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_58f8(UWORD opcode)
{
{{ CPTR srca = (LONG)(WORD)nextiword();
{ int val = cctrue(8) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_58f9(UWORD opcode)
{
{{ CPTR srca = nextilong();
{ int val = cctrue(8) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5900(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ BYTE dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
}}}}}}
void op_5910(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5918(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5920(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5928(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5930(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}}
void op_5938(UWORD opcode)
{
ULONG srcreg = 4;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5939(UWORD opcode)
{
ULONG srcreg = 4;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5940(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ WORD dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
}}}}}}
void op_5948(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst - src;
regs.a[dstreg] = (newv);
}}}}}
void op_5950(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5958(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ regs.a[dstreg] += 2;
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5960(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 2;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5968(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5970(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}}
void op_5978(UWORD opcode)
{
ULONG srcreg = 4;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5979(UWORD opcode)
{
ULONG srcreg = 4;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5980(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
regs.d[dstreg] = (newv);
}}}}}}
void op_5988(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst - src;
regs.a[dstreg] = (newv);
}}}}}
void op_5990(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5998(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ regs.a[dstreg] += 4;
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_59a0(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 4;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_59a8(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_59b0(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}}
void op_59b8(UWORD opcode)
{
ULONG srcreg = 4;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_59b9(UWORD opcode)
{
ULONG srcreg = 4;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_59c0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{{ int val = cctrue(9) ? 0xff : 0;
regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
}}}}
void op_59c8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ WORD src = regs.d[srcreg];
{ WORD offs = nextiword();
if (!cctrue(9)) {
if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
}
}}}}
void op_59d0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(9) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_59d8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
{ int val = cctrue(9) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_59e0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(9) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_59e8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
{ int val = cctrue(9) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_59f0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
UWORD srcdp = nextiword();
srca += (LONG)(BYTE)(srcdp & 0xFF);
{ ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
srca += srcdpr;
{ int val = cctrue(9) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_59f8(UWORD opcode)
{
{{ CPTR srca = (LONG)(WORD)nextiword();
{ int val = cctrue(9) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_59f9(UWORD opcode)
{
{{ CPTR srca = nextilong();
{ int val = cctrue(9) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5a00(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ BYTE dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
}}}}}}
void op_5a10(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5a18(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5a20(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5a28(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5a30(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}}
void op_5a38(UWORD opcode)
{
ULONG srcreg = 5;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5a39(UWORD opcode)
{
ULONG srcreg = 5;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5a40(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ WORD dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
}}}}}}
void op_5a48(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst + src;
regs.a[dstreg] = (newv);
}}}}}
void op_5a50(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5a58(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ regs.a[dstreg] += 2;
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5a60(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 2;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5a68(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5a70(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}}
void op_5a78(UWORD opcode)
{
ULONG srcreg = 5;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5a79(UWORD opcode)
{
ULONG srcreg = 5;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5a80(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
regs.d[dstreg] = (newv);
}}}}}}
void op_5a88(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst + src;
regs.a[dstreg] = (newv);
}}}}}
void op_5a90(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5a98(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ regs.a[dstreg] += 4;
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_5aa0(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 4;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_5aa8(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5ab0(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}}
void op_5ab8(UWORD opcode)
{
ULONG srcreg = 5;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5ab9(UWORD opcode)
{
ULONG srcreg = 5;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5ac0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{{ int val = cctrue(10) ? 0xff : 0;
regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
}}}}
void op_5ac8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ WORD src = regs.d[srcreg];
{ WORD offs = nextiword();
if (!cctrue(10)) {
if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
}
}}}}
void op_5ad0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(10) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5ad8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
{ int val = cctrue(10) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_5ae0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(10) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_5ae8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
{ int val = cctrue(10) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5af0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
UWORD srcdp = nextiword();
srca += (LONG)(BYTE)(srcdp & 0xFF);
{ ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
srca += srcdpr;
{ int val = cctrue(10) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_5af8(UWORD opcode)
{
{{ CPTR srca = (LONG)(WORD)nextiword();
{ int val = cctrue(10) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5af9(UWORD opcode)
{
{{ CPTR srca = nextilong();
{ int val = cctrue(10) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5b00(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ BYTE dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
}}}}}}
void op_5b10(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5b18(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5b20(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5b28(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5b30(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}}
void op_5b38(UWORD opcode)
{
ULONG srcreg = 5;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5b39(UWORD opcode)
{
ULONG srcreg = 5;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5b40(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ WORD dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
}}}}}}
void op_5b48(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst - src;
regs.a[dstreg] = (newv);
}}}}}
void op_5b50(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5b58(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ regs.a[dstreg] += 2;
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5b60(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 2;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5b68(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5b70(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}}
void op_5b78(UWORD opcode)
{
ULONG srcreg = 5;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5b79(UWORD opcode)
{
ULONG srcreg = 5;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5b80(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
regs.d[dstreg] = (newv);
}}}}}}
void op_5b88(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst - src;
regs.a[dstreg] = (newv);
}}}}}
void op_5b90(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5b98(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ regs.a[dstreg] += 4;
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_5ba0(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 4;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_5ba8(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5bb0(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}}
void op_5bb8(UWORD opcode)
{
ULONG srcreg = 5;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5bb9(UWORD opcode)
{
ULONG srcreg = 5;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5bc0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{{ int val = cctrue(11) ? 0xff : 0;
regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
}}}}
void op_5bc8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ WORD src = regs.d[srcreg];
{ WORD offs = nextiword();
if (!cctrue(11)) {
if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
}
}}}}
void op_5bd0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(11) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5bd8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
{ int val = cctrue(11) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_5be0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(11) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_5be8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
{ int val = cctrue(11) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5bf0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
UWORD srcdp = nextiword();
srca += (LONG)(BYTE)(srcdp & 0xFF);
{ ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
srca += srcdpr;
{ int val = cctrue(11) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_5bf8(UWORD opcode)
{
{{ CPTR srca = (LONG)(WORD)nextiword();
{ int val = cctrue(11) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5bf9(UWORD opcode)
{
{{ CPTR srca = nextilong();
{ int val = cctrue(11) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5c00(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ BYTE dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
}}}}}}
void op_5c10(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5c18(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5c20(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5c28(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5c30(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}}
void op_5c38(UWORD opcode)
{
ULONG srcreg = 6;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5c39(UWORD opcode)
{
ULONG srcreg = 6;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5c40(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ WORD dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
}}}}}}
void op_5c48(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst + src;
regs.a[dstreg] = (newv);
}}}}}
void op_5c50(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5c58(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ regs.a[dstreg] += 2;
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5c60(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 2;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5c68(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5c70(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}}
void op_5c78(UWORD opcode)
{
ULONG srcreg = 6;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5c79(UWORD opcode)
{
ULONG srcreg = 6;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5c80(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
regs.d[dstreg] = (newv);
}}}}}}
void op_5c88(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst + src;
regs.a[dstreg] = (newv);
}}}}}
void op_5c90(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5c98(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ regs.a[dstreg] += 4;
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_5ca0(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 4;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_5ca8(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5cb0(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}}
void op_5cb8(UWORD opcode)
{
ULONG srcreg = 6;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5cb9(UWORD opcode)
{
ULONG srcreg = 6;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5cc0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{{ int val = cctrue(12) ? 0xff : 0;
regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
}}}}
void op_5cc8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ WORD src = regs.d[srcreg];
{ WORD offs = nextiword();
if (!cctrue(12)) {
if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
}
}}}}
void op_5cd0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(12) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5cd8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
{ int val = cctrue(12) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_5ce0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(12) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_5ce8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
{ int val = cctrue(12) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5cf0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
UWORD srcdp = nextiword();
srca += (LONG)(BYTE)(srcdp & 0xFF);
{ ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
srca += srcdpr;
{ int val = cctrue(12) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_5cf8(UWORD opcode)
{
{{ CPTR srca = (LONG)(WORD)nextiword();
{ int val = cctrue(12) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5cf9(UWORD opcode)
{
{{ CPTR srca = nextilong();
{ int val = cctrue(12) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5d00(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ BYTE dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
}}}}}}
void op_5d10(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5d18(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5d20(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5d28(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5d30(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}}
void op_5d38(UWORD opcode)
{
ULONG srcreg = 6;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5d39(UWORD opcode)
{
ULONG srcreg = 6;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5d40(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ WORD dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
}}}}}}
void op_5d48(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst - src;
regs.a[dstreg] = (newv);
}}}}}
void op_5d50(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5d58(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ regs.a[dstreg] += 2;
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5d60(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 2;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5d68(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5d70(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}}
void op_5d78(UWORD opcode)
{
ULONG srcreg = 6;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5d79(UWORD opcode)
{
ULONG srcreg = 6;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5d80(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
regs.d[dstreg] = (newv);
}}}}}}
void op_5d88(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst - src;
regs.a[dstreg] = (newv);
}}}}}
void op_5d90(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5d98(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ regs.a[dstreg] += 4;
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_5da0(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 4;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_5da8(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5db0(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}}
void op_5db8(UWORD opcode)
{
ULONG srcreg = 6;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5db9(UWORD opcode)
{
ULONG srcreg = 6;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5dc0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{{ int val = cctrue(13) ? 0xff : 0;
regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
}}}}
void op_5dc8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ WORD src = regs.d[srcreg];
{ WORD offs = nextiword();
if (!cctrue(13)) {
if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
}
}}}}
void op_5dd0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(13) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5dd8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
{ int val = cctrue(13) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_5de0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(13) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_5de8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
{ int val = cctrue(13) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5df0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
UWORD srcdp = nextiword();
srca += (LONG)(BYTE)(srcdp & 0xFF);
{ ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
srca += srcdpr;
{ int val = cctrue(13) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_5df8(UWORD opcode)
{
{{ CPTR srca = (LONG)(WORD)nextiword();
{ int val = cctrue(13) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5df9(UWORD opcode)
{
{{ CPTR srca = nextilong();
{ int val = cctrue(13) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5e00(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ BYTE dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
}}}}}}
void op_5e10(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5e18(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5e20(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5e28(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5e30(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}}
void op_5e38(UWORD opcode)
{
ULONG srcreg = 7;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5e39(UWORD opcode)
{
ULONG srcreg = 7;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5e40(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ WORD dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
}}}}}}
void op_5e48(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst + src;
regs.a[dstreg] = (newv);
}}}}}
void op_5e50(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5e58(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ regs.a[dstreg] += 2;
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5e60(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 2;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5e68(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5e70(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}}
void op_5e78(UWORD opcode)
{
ULONG srcreg = 7;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5e79(UWORD opcode)
{
ULONG srcreg = 7;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
WORD dst = get_word(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5e80(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.d[dstreg];
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
regs.d[dstreg] = (newv);
}}}}}}
void op_5e88(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst + src;
regs.a[dstreg] = (newv);
}}}}}
void op_5e90(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5e98(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ regs.a[dstreg] += 4;
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_5ea0(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 4;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_5ea8(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5eb0(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}}
void op_5eb8(UWORD opcode)
{
ULONG srcreg = 7;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5eb9(UWORD opcode)
{
ULONG srcreg = 7;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
LONG dst = get_long(dsta);
{ ULONG newv = dst + src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs == flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5ec0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{{ int val = cctrue(14) ? 0xff : 0;
regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
}}}}
void op_5ec8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ WORD src = regs.d[srcreg];
{ WORD offs = nextiword();
if (!cctrue(14)) {
if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
}
}}}}
void op_5ed0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(14) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5ed8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
{ int val = cctrue(14) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_5ee0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(14) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_5ee8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
{ int val = cctrue(14) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5ef0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
UWORD srcdp = nextiword();
srca += (LONG)(BYTE)(srcdp & 0xFF);
{ ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
srca += srcdpr;
{ int val = cctrue(14) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_5ef8(UWORD opcode)
{
{{ CPTR srca = (LONG)(WORD)nextiword();
{ int val = cctrue(14) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5ef9(UWORD opcode)
{
{{ CPTR srca = nextilong();
{ int val = cctrue(14) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5f00(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ BYTE dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
}}}}}}
void op_5f10(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5f18(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5f20(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
{ CPTR dsta = regs.a[dstreg];
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}
void op_5f28(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5f30(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}}}
void op_5f38(UWORD opcode)
{
ULONG srcreg = 7;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5f39(UWORD opcode)
{
ULONG srcreg = 7;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
BYTE dst = get_byte(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((BYTE)(src)) < 0;
bool flgo = ((BYTE)(dst)) < 0;
bool flgn = ((BYTE)(newv)) < 0;
regs.z = ((BYTE)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
regs.n = flgn != 0;
put_byte(dsta,newv);
}}}}}}
void op_5f40(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ WORD dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
}}}}}}
void op_5f48(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst - src;
regs.a[dstreg] = (newv);
}}}}}
void op_5f50(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5f58(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ regs.a[dstreg] += 2;
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5f60(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 2;
{ CPTR dsta = regs.a[dstreg];
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}
void op_5f68(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5f70(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}}}
void op_5f78(UWORD opcode)
{
ULONG srcreg = 7;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5f79(UWORD opcode)
{
ULONG srcreg = 7;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
WORD dst = get_word(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((WORD)(src)) < 0;
bool flgo = ((WORD)(dst)) < 0;
bool flgn = ((WORD)(newv)) < 0;
regs.z = ((WORD)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
regs.n = flgn != 0;
put_word(dsta,newv);
}}}}}}
void op_5f80(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.d[dstreg];
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
regs.d[dstreg] = (newv);
}}}}}}
void op_5f88(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ LONG dst = regs.a[dstreg];
{ ULONG newv = dst - src;
regs.a[dstreg] = (newv);
}}}}}
void op_5f90(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5f98(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ regs.a[dstreg] += 4;
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_5fa0(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ regs.a[dstreg] -= 4;
{ CPTR dsta = regs.a[dstreg];
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}
void op_5fa8(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5fb0(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG src = srcreg;
{ CPTR dsta = regs.a[dstreg];
UWORD dstdp = nextiword();
dsta += (LONG)(BYTE)(dstdp & 0xFF);
{ ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
dsta += dstdpr;
{ LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}}}
void op_5fb8(UWORD opcode)
{
ULONG srcreg = 7;
{{ ULONG src = srcreg;
{ CPTR dsta = (LONG)(WORD)nextiword();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5fb9(UWORD opcode)
{
ULONG srcreg = 7;
{{ ULONG src = srcreg;
{ CPTR dsta = nextilong();
LONG dst = get_long(dsta);
{ ULONG newv = dst - src;
{ bool flgs = ((LONG)(src)) < 0;
bool flgo = ((LONG)(dst)) < 0;
bool flgn = ((LONG)(newv)) < 0;
regs.z = ((LONG)(newv)) == 0;
regs.v = (flgs != flgo) && (flgn != flgo);
regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
regs.n = flgn != 0;
put_long(dsta,newv);
}}}}}}
void op_5fc0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{{ int val = cctrue(15) ? 0xff : 0;
regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
}}}}
void op_5fc8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ WORD src = regs.d[srcreg];
{ WORD offs = nextiword();
if (!cctrue(15)) {
if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
}
}}}}
void op_5fd0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(15) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5fd8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
{ regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
{ int val = cctrue(15) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_5fe0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
{ CPTR srca = regs.a[srcreg];
{ int val = cctrue(15) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_5fe8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
{ int val = cctrue(15) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5ff0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR srca = regs.a[srcreg];
UWORD srcdp = nextiword();
srca += (LONG)(BYTE)(srcdp & 0xFF);
{ ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
srca += srcdpr;
{ int val = cctrue(15) ? 0xff : 0;
put_byte(srca,val);
}}}}}
void op_5ff8(UWORD opcode)
{
{{ CPTR srca = (LONG)(WORD)nextiword();
{ int val = cctrue(15) ? 0xff : 0;
put_byte(srca,val);
}}}}
void op_5ff9(UWORD opcode)
{
{{ CPTR srca = nextilong();
{ int val = cctrue(15) ? 0xff : 0;
put_byte(srca,val);
}}}}